package ApplicationModels;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import org.uqbar.commons.utils.Observable;

import Domain.Empleado;
import Domain.Planificacion;
import Domain.Tienda;

@SuppressWarnings("serial")
@Observable
public class AsignacionAppModel implements Serializable {

	private Tienda tienda;
	private Planificacion planificacion;
	private LocalTime horaDesde;
	private LocalTime horaHasta;
	private Empleado empleadoSeleccionado;

	public AsignacionAppModel(Planificacion planificacionSeleccionada,
			Tienda tienda) {
		this.setTienda(tienda);
		this.setPlanificacion(planificacionSeleccionada);
	}

	private void setPlanificacion(Planificacion planificacionSeleccionada) {
		this.planificacion = planificacionSeleccionada;

	}

	public List<Integer> getHorariosPosibles() {
		List<Integer> horarios = new ArrayList<Integer>();
		for (int i = 0; i < 24; i++) {
			horarios.add(i);
		}
		return horarios;
	}

	public String getEstado(Empleado e) {
		return e.getEstadoEn(this.getFechaTurno(), this.getHoraDesde(),
				this.getHoraHasta());
	}

	// ////////////////////////ACCESORS///////////////////////////

	public void setTienda(Tienda t) {
		this.tienda = t;
	}

	public Tienda getTieda() {
		return this.tienda;
	}

	public LocalTime getHoraDesde() {
		return horaDesde;
	}

	public void setHoraDesde(LocalTime horaDesde) {
		this.horaDesde = horaDesde;
	}

	public LocalTime getHoraHasta() {
		return horaHasta;
	}

	public void setHoraHasta(LocalTime horaHasta) {
		this.horaHasta = horaHasta;
	}

	public LocalDate getFechaTurno() {
		return this.getPlanificacion().getFechaAPlanificar();
	}

	public void setFechaTurno(LocalDate fechaTurno) {
		this.getPlanificacion().setFechaAPlanificar(fechaTurno);
	}

	public List<Empleado> getListaDeEmpleados() {
		return this.getTieda().getEmpleados();
	}

	public Planificacion getPlanificacion() {
		return this.planificacion;
	}
	
	public List<Empleado> listaDeEmpleados(){
		return this.getTieda().getEmpleados();
	}

	public Empleado getEmpleadoSeleccionado() {
		return empleadoSeleccionado;
	}

	public void setEmpleadoSeleccionado(Empleado empleadoSeleccionado) {
		this.empleadoSeleccionado = empleadoSeleccionado;
	}

}
